
const client=require("@alicloud/openapi-client")
// console.log(client)
const {Config,
    OpenApiRequest,
    Params,
   default: OpenApi
}=client;

const {
    default:Util,
    RuntimeOptions:$Util
}=require('@alicloud/tea-util');
const fs = require("fs");
const  AccessKeyID = "LTAI4FmLrchYdMzf7z8ABM3Y"
const  AccessKeySecret = "Dw6fvQ4mdNlm1g8OTmx4VpRjj7DVnc"

 class Client {


    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    static createClient(accessKeyId, accessKeySecret) {
        let config = new Config({
            // 必填，您的 AccessKey ID
            accessKeyId: accessKeyId,
            // 必填，您的 AccessKey Secret
            accessKeySecret: accessKeySecret,
        });
        // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
        config.endpoint = `ocr-api.cn-hangzhou.aliyuncs.com`;
        return new OpenApi(config);
    }

    /**
     * 使用STS鉴权方式初始化账号Client，推荐此方式。
     * @param accessKeyId
     * @param accessKeySecret
     * @param securityToken
     * @return Client
     * @throws Exception
     */
    static createClientWithSTS(accessKeyId, accessKeySecret, securityToken) {
        let config = new Config({
            // 必填，您的 AccessKey ID
            accessKeyId: accessKeyId,
            // 必填，您的 AccessKey Secret
            accessKeySecret: accessKeySecret,
            // 必填，您的 Security Token
            securityToken: securityToken,
            // 必填，表明使用 STS 方式
            type: "sts",
        });
        // Endpoint 请参考 https://api.aliyun.com/product/ocr-api
        config.endpoint = `ocr-api.cn-hangzhou.aliyuncs.com`;
        return new OpenApi(config);
    }

    /**
     * API 相关
     * @return OpenApi.Params
     * @param action
     */
    static createApiInfo(action) {
        return new Params({
            // 接口名称
            action,
            // 接口版本
            version: "2021-07-07",
            // 接口协议
            protocol: "HTTPS",
            // 接口 HTTP 方法
            method: "POST",
            authType: "AK",
            style: "V3",
            // 接口 PATH
            pathname: `/`,
            // 接口请求体内容格式
            reqBodyType: "json",
            // 接口响应体内容格式
            bodyType: "json",
        });
    }

    static async main(path,action) {
        let stream= fs.createReadStream(path);
        // 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        // 工程代码泄露可能会导致 AccessKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议使用更安全的 STS 方式，更多鉴权访问方式请参见：https://help.aliyun.com/document_detail/378664.html
        let client = Client.createClient(AccessKeyID, AccessKeySecret);
        let params = Client.createApiInfo(action);
        // runtime options
        let runtime = new $Util({ });
        let request = new OpenApiRequest({
            stream,
        });
        // 复制代码运行请自行打印 API 的返回值
        // 返回值为 Map 类型，可从 Map 中获得三类数据：响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
        let resp = await client.callApi(params, request, runtime);
        return Util.toJSONString(resp);
    }

}

module.exports=Client;
// Client.main(process.argv.slice(2));